package com.cg.service;


import com.cg.dto.Result;
import com.cg.dto.UpdateUserDto;
import com.cg.dto.UserDepRoleDto;
import com.cg.dto.UserRoleDto;
import com.cg.entity.User;
import com.cg.vo.LoginUserVo;
import com.cg.vo.UserDepRoleVo;
import com.cg.vo.UserDetailVo;
import com.cg.vo.UserShowInfoVo;
import com.github.pagehelper.PageInfo;

/**
 * (User)表服务接口
 *
 * @author chengong
 * @since 2023-12-01 11:49:44
 */
public interface UserService {

    /**
     * 用UUID生成codeNum
     *
     * @return
     */
    String createCodeNum();


    /**
     * 添加新用户
     *
     * @param user:前端传过来要添加的用户信息
     * @return：返回添加成功的行数
     */
    Integer createUser(User user);


    /**
     * 用户登录
     *
     * @param user：前端传递过来的用户登录名和密码
     * @return：返回的数据
     */
    LoginUserVo login(User user);


    /**
     * 根据token获取用户信息
     *
     * @param token
     * @return
     */
    LoginUserVo getUserByToken(String token);


    /**
     * 员工管理页面分页并按照名称模糊查询
     */
    PageInfo<UserDepRoleVo> queryUserByUserName(UserDepRoleDto userDepRoleDto);

    /**
     * 角色授权
     *
     * @param userRoleDto
     * @return
     */
    Integer createUserRole(UserRoleDto userRoleDto);


    /**
     * 用户详情展示
     */
    UserDetailVo getUserByUserId(Integer userId);


    /**
     * 启用/禁用
     */
    Integer updateUserState(Integer id);

    /**
     * 修改员工信息
     * @param user
     * @return
     */
    Integer updateUserByUserId(User user);


    /**
     * 删除员工
     */
    Result deleteUserByUserId(Integer userId);


    /**
     * 根据用户id查询个人的详细信息
     */
    UserShowInfoVo queryUserInfo(Integer userId);

    /**
     * 验证登录名是否可用
     */
    Integer checkLoginUser(String loginUser);

    /**
     * 修改密码
     */
    Integer setPassword(UpdateUserDto updateUserDto);


    /**
     * 修改用户登录名
     */
    Integer setLoginUser(User user);
}
